JavaScript এর RegExp এ Parentheses বা গ্রুপিং একটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য, যা স্ট্রিংয়ের অংশগুলোকে একত্রিত করে একটি গ্রুপ হিসেবে কাজ করতে সাহায্য করে। এটি আপনাকে প্যাটার্নের ভেতরে এক বা একাধিক অংশকে একটি ইউনিট হিসেবে ব্যবহার করার সুযোগ দেয়।
গ্রুপিং কী?
Parentheses ( ) ব্যবহার করে আপনি একাধিক চরিত্র বা প্যাটার্নকে একটি গ্রুপে রেখে সেটি একটি একক একক অংশ হিসেবে ট্রিট করতে পারেন। গ্রুপিং করার মাধ্যমে আপনি স্ট্রিংয়ের অংশগুলি একত্রিত করে তাদের উপর বিভিন্ন অপারেশন যেমন মেলানো, রিপ্লেসমেন্ট, বা ক্যাপচার করতে পারবেন।
গ্রুপিং এর সঠিক ব্যবহার
যখন আপনি কিছু অংশকে গ্রুপ করতে চান, তখন সেই অংশটি প্যারেনথেসিস ( ) চিহ্নের মধ্যে রাখতে হবে।
সিনট্যাক্স:
/(pattern)/;
এখানে, (pattern) একটি গ্রুপ হিসাবে কাজ করবে।
উদাহরণ
১. একাধিক চরিত্রকে গ্রুপ করা
ধরা যাক, আপনি "hello" শব্দের প্রথম দুটি অক্ষরকে গ্রুপ করতে চান:
let regex = /(he)llo/;
let str = "hello";
console.log(regex.test(str)); // true
এখানে, (he) গ্রুপটি "hello" শব্দের প্রথম দুটি অক্ষরকে একটি গ্রুপ হিসেবে গ্রুপ করছে। প্যাটার্নের মধ্যে he হওয়া সত্ত্বেও, পুরো স্ট্রিংয়ের সাথে এটি মিলে যাচ্ছে।
২. গ্রুপিং এবং রিপিটেশন
আপনি গ্রুপিং এর সাথে রিপিটেশন মেটাচারিত্র যেমন *, +, অথবা {} ব্যবহার করে কিছু অংশকে একাধিক বার মিলাতে পারেন। যেমন, দুটি অক্ষরকে একাধিক বার মিলানো:
let regex = /(ab)+/;
let str = "ababab";
console.log(regex.test(str)); // true
এখানে, (ab)+ প্যাটার্নটি "ababab" স্ট্রিংয়ের মধ্যে "ab" অংশটি একাধিক বার মিলাচ্ছে। গ্রুপিং এখানে রিপিটেশন সুবিধা প্রদান করছে।
গ্রুপিং এবং ক্যাপচার
গ্রুপিং-এর আরেকটি গুরুত্বপূর্ণ দিক হলো ক্যাপচার। যখন আপনি গ্রুপিং ব্যবহার করেন, তখন ঐ গ্রুপের মেলানো অংশগুলো আলাদাভাবে ক্যাপচার করা যায়। এই ক্যাপচার করা অংশগুলো পরবর্তীতে রেফারেন্স হিসেবে ব্যবহার করা যেতে পারে।
উদাহরণ:
let regex = /(\d{2})-(\d{2})-(\d{4})/;
let str = "25-12-2023";
let result = regex.exec(str);
console.log(result[1]); // 25
console.log(result[2]); // 12
console.log(result[3]); // 2023
এখানে, (\d{2}) প্রথম গ্রুপ, (\d{2}) দ্বিতীয় গ্রুপ এবং (\d{4}) তৃতীয় গ্রুপ হিসেবে কাজ করছে। exec() মেথডের মাধ্যমে আপনি এই গ্রুপগুলোর অংশগুলোকে আলাদাভাবে ক্যাপচার করতে পারেন।
Non-Capturing Groups
কখনো কখনো আপনি গ্রুপিং করতে চাইবেন, কিন্তু সেই গ্রুপের মান ক্যাপচার করতে চান না। এমন অবস্থায় Non-Capturing Group ব্যবহার করা যায়, যেখানে গ্রুপটি প্যাটার্নে অংশ নেয়, কিন্তু ক্যাপচার হয় না।
Non-Capturing Group এর সিনট্যাক্স:
/(?:pattern)/;
উদাহরণ:
let regex = /(?:abc)+/;
let str = "abcabcabc";
console.log(regex.test(str)); // true
এখানে, (?:abc) একটি non-capturing group, যা abc কে গ্রুপ হিসেবে ব্যবহার করে, তবে এটি কোনো ক্যাপচার করা অংশ তৈরি করে না।
গ্রুপিং এবং OR (|)
গ্রুপিং এর সাথে আপনি OR অপারেটর | ব্যবহার করে একাধিক বিকল্পের মধ্যে মিল খুঁজতে পারেন। যেমন:
let regex = /(cat|dog)/;
let str = "I have a cat";
console.log(regex.test(str)); // true
এখানে, (cat|dog) প্যাটার্নটি "cat" বা "dog" এর মধ্যে যেকোনো একটি মেলানোর চেষ্টা করবে।
সারাংশ
Parentheses (()) ব্যবহার করে RegExp এ গ্রুপিং করা যায়, যা একাধিক প্যাটার্নকে একটি ইউনিট হিসেবে ব্যবহার করতে সাহায্য করে। এটি স্ট্রিংয়ের নির্দিষ্ট অংশ আলাদা করে ধরে রাখতে বা ক্যাপচার করতে কাজে লাগে। গ্রুপিং ব্যবহার করে আপনি আরও উন্নত প্যাটার্ন তৈরি করতে পারেন, যেমন রিপিটেশন, ক্যাপচার এবং OR অপারেটরের সাহায্যে বিকল্প মিলানোর সুবিধা। Non-Capturing Groups দিয়ে আপনি গ্রুপিং করতে পারেন কিন্তু ক্যাপচার করতে পারবেন না।
Read more